package com.inspinia.upms.dao;


import com.inspinia.base.dao.BaseDao;
import com.inspinia.upms.common.model.post.UpmsPost;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 岗位信息 数据层
 * 
 * @author ruoyi
 */
public interface UpmsPostDao extends BaseDao<UpmsPost>{
        /**
         * 批量删除岗位
         *
         * @param ids 岗位id数组
         */
        int batchDelete(@Param("ids") Long[] ids);

        /**
         * 统计同一个部门下已存在岗位名
         *
         * @param name   岗位名称
         * @param deptId 部门id
         * @param postId 岗位id
         * @return
         */
        int countExistedName(@Param("postName") String name, @Param("deptId") Long deptId, @Param("postId") Long postId);

        /**
         * 获取同一个部门下最大的权重值
         *
         * @param deptId 部门id
         * @return
         */
        Integer getMimWeightsByDeptId(Long deptId);

        /**
         * 查找所有的岗位
         *
         * @return
         */
        List<UpmsPost> findAll();

        /**
         * 获取岗位的名称
         *
         * @param postIds 岗位id集合
         * @return
         */
        List<String> findNamesByIds(@Param("postIds") List<Long> postIds);

        /**
         * 获取岗位的资源
         *
         * @param id 岗位id
         * @return
         */
        List<Long> findResourceIds(Long id);

        /**
         * 删除岗位的权限
         *
         * @param postId 岗位id
         */
        int deleteResources(Long postId);

        /**
         * 保存岗位权限
         *
         * @param postId      岗位id
         * @param resourceIds 资源id
         * @return
         */
        int saveResources(@Param("postId") Long postId, @Param("resourceIds") List<Long> resourceIds);

        /**
         * 查询某个岗位下的用户id
         *
         * @param postName 岗位名称
         * @return
         */
        List<Long> findUserIdsByPostName(@Param("postName") String postName);

        /**
         * 查找岗位下的所有用户id
         *
         * @param postId 岗位id
         * @return
         */
        List<Long> findUserIdsByPostId(@Param("postId") Long postId);

        /**
         * 批量删除岗位和用户的关系
         * @param ids
         */
        int batchDeletePostUser(@Param("ids") Long[] ids);

        /**
         * 批量删除岗位和资源的关系
         * @param ids
         * @return
         */
        int batchDeletePostResource(@Param("ids") Long[] ids);

        /**
         * 获取部门下的所有岗位id
         * @param deptId
         * @return
         */
        List<UpmsPost> findPostByDeptId(Long deptId);
}
